package tau.dimes.visualization.applet;

import tau.dimes.visualization.applet.data.TraceDataSet;

/**
 * Represents the interface for a visualization implementation.
 */
interface IVisualization
{
	/**
	 * Sets a reference for the containing applet.
	 * @param applet A reference for the containing applet.
	 */
	void setApplet(DimesVApplet applet);
	
	/**
	 * Sets the trace data set.
	 * @param traceDataSet An instance of TraceDataSet.
	 */
	void setTraceDataSet(TraceDataSet traceDataSet);
	
	/**
	 * Initialize the visualization object.
	 */
	void init();
	
	/**
	 * Draw the momentary state of the visualization.
	 * @param timeSlot Time slot index.
	 * @param alpha Alpha value (see Clock class).
	 */
	void draw(int timeSlot, float alpha);
	
	/**
	 * Gets the number of time slots required to draw the full visualization.
	 * @return The number of time slots required to draw the full visualization.
	 */
	int getTimeSlots();
}
